
/* ========================================================
 * Copyright © 2014 Eric houheaven
 * All rights reserved.
 * http://www.houheaven.com
 * ======================================================== */

function form_init()
{
	// rules overlay control
	$(".show_rule").click(function(){ $(".overlay").show(); $(".panel,.fm").addClass("blur"); });
	$(".hide_rule").click(function(){ $(".overlay").hide(); $(".panel,.fm").removeClass("blur"); });
	$(".overlay").click(function(){ $(".overlay").hide(); $(".panel,.fm").removeClass("blur"); });
	$(".overlay > div").click(function(e){ e.stopPropagation(); });
	
	// form controls initial
	$(".single").wrap("<div class='group'><div class='bindgroup'></div></div>");
	$(".multi").wrap("<div class='bindgroup'></div>");
	$(".multi1").parent().wrapAll("<div class='group'></div>");
	$(".multi2").parent().wrapAll("<div class='group'></div>");
	$(".multi3").parent().wrapAll("<div class='group'></div>");
	$(".multi4").parent().wrapAll("<div class='group'></div>");
	$(".multi5").parent().wrapAll("<div class='group'></div>");
	$(".bindgroup").append($("<span class='tips'></span>"));
	
	
	$(".loginname").removeClass("loginname").parent().addClass("loginname");
	$(".loginpswd").removeClass("loginpswd").parent().addClass("loginpswd");
	$(".regname").removeClass("regname").parent().addClass("regname");
	$(".regpwd1").removeClass("regpwd1").parent().addClass("regpwd1");
	$(".regpwd2").removeClass("regpwd2").parent().addClass("regpwd2");
	$(".phone").removeClass("phone").parent().addClass("phone");
	$(".email").removeClass("email").parent().addClass("email");
	$(".addr").removeClass("addr").parent().addClass("addr");
	$(".birth").removeClass("birth").parent().addClass("birth");
	$(".job1").removeClass("job1").parent().addClass("job1");
	$(".job2").removeClass("job2").parent().addClass("job2");
	$(".msgcont").removeClass("msgcont").parent().addClass("msgcont");
	
	$(".fm").fadeIn(1000);
}

function form_check()
{
	// ============================================================================================
	
	// 验证错误时，用户可以清空当前输入内容
	$(".failed").on("click",function(){ $(this).prev().val("").focus(); $(this).removeAttr("class").addClass("tips warning"); });
	$(".submit").click(function(){ $("form").submit(); });
	
	// ============================================================================================
	
	$("form").submit(function(){
		
		
		// 提交验证：登录
		loginname=$("input[name=loginname]").val();
		loginpswd=$("input[name=loginpswd]").val();
		switch(true)
		{
			case loginname=="":
				$("input[name=loginname]").focus().next().removeClass("success failed").addClass("warning");
				return false; break;
			default:
				$("input[name=loginname]").next().removeAttr("class").addClass("tips success");
		}
		switch(true)
		{
			case loginpswd=="":
				$("input[name=loginpswd]").focus().next().removeClass("success failed").addClass("warning");
				return false; break;
			default:
				$("input[name=loginpswd]").next().removeAttr("class").addClass("tips success");
		}
		
		
		// 提交验证：注册
		regname=$("input[name=regname]").val();
		regpwd1=$("input[name=regpwd1]").val();
		regpwd2=$("input[name=regpwd2]").val();
		if(typeof regname!="undefined")		// 页面存在表单元素才会执行
		{			
			switch(true)
			{
				case regname=="":
					$("input[name=regname]").focus().next().removeAttr("class").addClass("tips warning");
					return false; break;
				case !Boolean(regname.match(/^[a-zA-Z\u4e00-\u9fa5]{1}[\u4e00-\u9fa5\w-]{0,18}[\u4e00-\u9fa5\w]{1}$/)):	// 正则：只能以汉字和字母开头，其余部分不能包含特殊字符
					$("input[name=regname]").focus().next().removeAttr("class").addClass("tips failed");
					return false; break;
				default:
					$("input[name=regname]").next().removeAttr("class").addClass("tips success");
			}
		}
		if(typeof regpwd1!="undefined")
		{
			switch(true)
			{
				case regpwd1=="":
					$("input[name=regpwd1]").focus().next().removeAttr("class").addClass("tips warning");
					return false; break;
				case !Boolean(regpwd1.match(/^\S{6,20}$/)):	// 正则：密码 6-20 位
					$("input[name=regpwd1]").focus().next().removeAttr("class").addClass("tips failed");
					return false; break;
				default:
					$("input[name=regpwd1]").next().removeAttr("class").addClass("tips success");
			}
		}
		switch(true)
		{
			case regpwd2=="":
				$("input[name=regpwd2]").focus().next().removeAttr("class").addClass("tips warning");
				return false; break;
			case regpwd1!=regpwd2:	// 正则：两次输入的密码要一致
				$("input[name=regpwd2]").focus().next().removeAttr("class").addClass("tips failed");
				return false; break;
			default:
				$("input[name=regpwd2]").next().removeAttr("class").addClass("tips success");
		}
		
		
		// 提交验证：基本信息
		phone=$("input[name=phone]").val();
		email=$("input[name=email]").val();
		if(typeof phone!="undefined")
		{
			switch(true)
			{
				case phone=="": $("input[name=phone]").focus().next().removeAttr("class").addClass("tips warning"); return false; break;
				case !is_phone(phone): $("input[name=phone]").focus().next().removeAttr("class").addClass("tips failed"); return false; break;
				default: $("input[name=phone]").next().removeAttr("class").addClass("tips success");
			}
		}
		if(typeof phone2!="undefined")
		{
			switch(true)
			{
				case phone2=="": $("input[name=phone2]").focus().next().removeAttr("class").addClass("tips warning"); return false; break;
				case !is_phone(phone2): $("input[name=phone2]").focus().next().removeAttr("class").addClass("tips failed"); return false; break;
				default: $("input[name=phone2]").next().removeAttr("class").addClass("tips success");
			}
		}
		if(typeof email!="undefined")
		{
			switch(true)
			{
				case email=="": $("input[name=email]").focus().next().removeAttr("class").addClass("tips warning"); return false; break;
				case !is_email(email): $("input[name=email]").focus().next().removeAttr("class").addClass("tips failed"); return false; break;
				default: $("input[name=email]").next().removeAttr("class").addClass("tips success");
			}
		}
		
		phone=$(".bindgroup.phone input").val();
		email=$(".bindgroup.email input").val();
		if(typeof phone!="undefined")
		{
			switch(true)
			{
				case phone=="": $(".bindgroup.phone input").focus().next().removeAttr("class").addClass("tips warning"); return false; break;
				case !is_phone(phone): $(".bindgroup.phone input").focus().next().removeAttr("class").addClass("tips failed"); return false; break;
				default: $(".bindgroup.phone input").next().removeAttr("class").addClass("tips success");
			}
		}
		if(typeof phone2!="undefined")
		{
			switch(true)
			{
				case phone2=="": $("input[name=phone2]").focus().next().removeAttr("class").addClass("tips warning"); return false; break;
				case !is_phone(phone2): $("input[name=phone2]").focus().next().removeAttr("class").addClass("tips failed"); return false; break;
				default: $("input[name=phone2]").next().removeAttr("class").addClass("tips success");
			}
		}
		if(typeof email!="undefined")
		{
			switch(true)
			{
				case email=="": $(".bindgroup.email input").focus().next().removeAttr("class").addClass("tips warning"); return false; break;
				case !is_email(email): $(".bindgroup.email input").focus().next().removeAttr("class").addClass("tips failed"); return false; break;
				default: $(".bindgroup.email input").next().removeAttr("class").addClass("tips success");
			}
		}
		
		selects_length=$("select").size();
		for(i=0;i<selects_length;i++)
		{
			Select=$("select").eq(i);
			if(Select.find("option:selected").val()=="0")
			{
				Select.focus().next().removeAttr("class").addClass("tips warning");
				return false;
			}
			else
				Select.next().removeAttr("class").addClass("tips success");
		}
		
		
		// 提交验证：不能为空
		for(i=0;i<$("input.notNull,textarea.notNull").size();i++)
		{
			obj=$("input.notNull").eq(i);
			if(obj.val()=="")
			{
				obj.focus().next().removeAttr("class").addClass("tips warning");
				return false;
			}
			else
				obj.next().removeAttr("class").addClass("tips success");
		}
		
		
		// 提交验证：留言信息
		msg=$("textarea[name=msgcont]").val();
		if(msg=="")
		{
			$("textarea[name=msgcont]").focus().next().removeAttr("class").addClass("tips warning");
			return false;
		}
		
		// 注册日期
		regdate=(new Date()).valueOf();
		$(".regdate").val(regdate);
		
		alert("123");
		
	});
	
	// ============================================================================================
	
	$("input").keyup(function(e){
		if(e.which==13)
			$("form").submit();
	});
	
	
	// 输入验证：登录
	$("input[name=loginname]").blur(function(){
		loginname=$(this).val();
		switch(true)
		{
			case loginname=="":
				$(this).next().removeAttr("class").addClass("tips warning");
				return false; break;
			default:
				$(this).next().removeAttr("class").addClass("tips success");
		}
	});
	
	$("input[name=loginpswd]").keyup(function(){
		loginpswd=$(this).val();
		switch(true)
		{
			case loginpswd=="":
				$(this).next().removeAttr("class").addClass("tips warning");
				return false; break;
			default:
				$(this).next().removeAttr("class").addClass("tips success");
		}
	});
	
	
	// 输入验证：注册
	$("input[name=regname]").blur(function(){
		regname=$(this).val();
		switch(true)
		{
			case regname=="":
				$(this).next().removeAttr("class").addClass("tips warning");
				return false; break;
			case !Boolean(regname.match(/^[a-zA-Z\u4e00-\u9fa5]{1}[\u4e00-\u9fa5\w-]{0,18}[\u4e00-\u9fa5\w]{1}$/)):	// 正则：只能以汉字和字母开头，其余部分不能包含特殊字符
				$(this).next().removeAttr("class").addClass("tips failed");
				return false; break;
			default:
				$(this).next().removeAttr("class").addClass("tips success");
		}
	});
	
	$("input[name=regpwd1]").keyup(function(){
		regpwd1=$(this).val();
		switch(true)
		{
			case regpwd1=="":
				$(this).next().removeAttr("class").addClass("tips warning");
				return false; break;
			case !Boolean(regpwd1.match(/^\S{6,20}$/)):	// 正则：密码 6-20 位
				$(this).next().removeAttr("class").addClass("tips failed");
				return false; break;
			default:
				$(this).next().removeAttr("class").addClass("tips success");
		}
	});
	
	$("input[name=regpwd2]").keyup(function(){
		regpwd2=$(this).val();
		switch(true)
		{
			case regpwd2=="":
				$(this).next().removeAttr("class").addClass("tips warning");
				return false; break;
			case regpwd1!=regpwd2:	// 正则：两次输入的密码要一致
				$(this).next().removeAttr("class").addClass("tips failed");
				return false; break;
			default:
				$(this).next().removeAttr("class").addClass("tips success");
		}
	});
	
	
	// 输入验证：基本信息
	$(".bindgroup.phone input").keyup(function(){
		which_phone($(this));
	});
	
	$(".bindgroup.email input").keyup(function(){
		email=$(this).val();
		switch(true)
		{
			case email=="":
				$(this).next().removeAttr("class").addClass("tips warning");
				return false; break;
			case !is_email(email):
				$(this).next().removeAttr("class").addClass("tips failed");
				return false; break;
			default:
				$(this).next().removeAttr("class").addClass("tips success");
		}
	});
	
	$("select").change(function(){
		if(!$(this).hasClass("selected"))	// 没有选择
		{
			$(this).addClass("selected");
			width=$(this).width();
			$(this).width(width-40);
			$(this).next().removeAttr("class").addClass("tips success");
		}
	});
	
	
	// 输入验证：留言内容
	$("textarea[name=msgcont]").keyup(function(){
		addr=$(this).val();
		switch(true)
		{
			case addr=="":
				$(this).next().removeAttr("class").addClass("tips warning");
				return false; break;
			default:
				$(this).next().removeAttr("class").addClass("tips success");
		}
	});
	
	
	
	// 输入验证：不能为空
	$("input.notNull").keyup(function(){
		addr=$(this).val();
		switch(true)
		{
			case addr=="":
				$(this).next().removeAttr("class").addClass("tips warning");
				return false; break;
			default:
				$(this).next().removeAttr("class").addClass("tips success");
		}
	});
	
	
	
	var now=new Date();
	$(".birth").mobiscroll().date({theme:"android-ics light",mode:"scroller",maxDate:new Date(now.getFullYear(),now.getMonth(),now.getDate()),dateFormat:"yy-mm-dd"});
	
}


// ============================================================================================

function is_user(str)
{
	var result=str.match(/^.{2,20}$/);
	if(result==null) return false;
	return true;
}

function is_email(str)
{
	reg=/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z]+$/; 
	if(reg.test(str))
		return true; 
	else
		return false;
}

function is_phone(str)
{
	//	所有手机号码
	//	130 131 132 133 134 135 136 137 138 139	---- /^13\d{9}$/
	//	xxx xxx xxx xxx xxx 145 xxx 147 xxx xxx ---- /^14[57]\d{8}$/
	//	150 151 152 153 xxx 155 156 157 158 159 ---- /^15[012356789]\d{8}$/
	//	180 181 182 183 184 185 186 187 188 189 ---- /^18\d{9}$/
	
	reg=/^1([38]\d|4[57]|5[012356789])\d{8}$/;
	if(reg.test(str))
		return true;
	else
		return false;
}

function which_phone(obj)
{
	//	中国电信手机号码开头数字 133、1349、153、180、181、189
	//	中国联通手机号码开头数字 130、131、132、145、155、156、185、186
	//	中国移动手机号码开头数字 1340-1348、135、136、137、138、139、147、150、151、152、157、158、159、182、183、184、187、188

	// ======================================  检测运营商  ========================================
	
	str=obj.val();
	switch(true)
	{
		case str.length==1:
			reg=/^1/;
			if(reg.test(str))
				obj.next().removeAttr("class").addClass("tips success");
			else
				obj.next().removeAttr("class").addClass("tips failed");
			break;
		case str.length==2:
			result=str.match(/^1[3458]/);
			if(result!=null)
				obj.next().removeAttr("class").addClass("tips success");
			else
				obj.next().removeAttr("class").addClass("tips failed");
			break;
		case str.length==3:
			reg=/^1([38]\d|4[57]|5[012356789])/;
			if(reg.test(str))
				obj.next().removeAttr("class").addClass("tips success");
			else
				obj.next().removeAttr("class").addClass("tips failed");
			break;
		case str.length>3:

			// 运营商检测：联通
			reg_lt=/^1(3[012]|45|5[56]|8[56])\d{0,8}$/;
			if(reg_lt.test(str))
				obj.next().removeAttr("class").addClass("tips phone-lt");
			else
				obj.next().removeAttr("class").addClass("tips failed");
			
			// 运营商检测：移动
			reg_yd=/^1(34[012345678]|3[56789]\d|47\d|5[012789]\d|8[23478]\d)\d{0,7}$/;
			if(reg_yd.test(str))
				obj.next().removeAttr("class").addClass("tips phone-yd");
			
			// 运营商检测：电信
			reg_dx=/^1(33\d|349|53\d|8[019]\d)\d{0,7}$/;
			if(reg_dx.test(str))
				obj.next().removeAttr("class").addClass("tips phone-dx");
			
			break;
		default:
			obj.next().removeAttr("class").addClass("tips warning");
	}
	
	// =====================================  不检测运营商  ========================================

//	switch(true)
//	{
//		case str.length==1:
//			reg=/^1/;
//			if(reg.test(str))
//				obj.next().removeAttr("class").addClass("tips success");
//			else
//				obj.next().removeAttr("class").addClass("tips failed");
//			break;
//		case str.length==2:
//			reg=/^1[3458]/;
//			if(reg.test(str))
//				obj.next().removeAttr("class").addClass("tips success");
//			else
//				obj.next().removeAttr("class").addClass("tips failed");
//			break;
//		case str.length>=2 && str.length<=11:
//			reg=/^1([38]\d|4[57]|5[012356789])\d{0,8}$/;
//			if(reg.test(str))
//				obj.next().removeAttr("class").addClass("tips success");
//			else
//				obj.next().removeAttr("class").addClass("tips failed");
//			break;
//		default:
//			obj.next().removeAttr("class").addClass("tips warning");
//	}
}


function which_phone2(obj)
{
	// Keycode
	//  8 -- Backspace
	// 13 -- Enter
	// 35 -- End
	// 36 -- Home
	// 37 -- Left Arrow
	// 39 -- Right Arrow
	// 46 -- Delete
	
	if(!(event.keyCode==8)&&!(event.keyCode==13)&&!(event.keyCode==35)&&!(event.keyCode==36)&&!(event.keyCode==37)&&!(event.keyCode==39)&&!(event.keyCode==46))
	if(!((event.keyCode>=48&&event.keyCode<=57)||(event.keyCode>=96&&event.keyCode<=105)))
		event.returnValue=false;

	str=obj.val();
	switch(true)
	{
		case str.length==1:
			result=str.match(/^1/);
			if(result!=null)
				obj.next().removeAttr("class").addClass("tips success");
			break;
		case str.length==2:
			result=str.match(/^1[3458]/);
			if(result!=null)
				obj.next().removeAttr("class").addClass("tips success");
			break;
		case str.length>2 && str.length<=11:
			result=str.match(/^1([38]\d|4[57]|5[012356789])\d{0,8}/);
			if(result!=null)
				obj.next().removeAttr("class").addClass("tips success");
			else
				obj.next().removeAttr("class").addClass("tips failed");
			break;
		default:
			obj.next().removeAttr("class").addClass("tips warning");
	}
}


function debug(param)
{
	// 测试区
	switch(true)
	{
		case param=="login":
			$("input[name=loginname]").val("Eric");
			$("input[name=loginpswd]").val("123456");
			break;
		case param=="reg":
			$("input[name=regname]").val("Eric");
			$("input[name=regpwd1]").val("123456");
			$("input[name=regpwd2]").val("123456");
			$("input[name=phone]").val("15050052536");
			break;
		case param=="msg":
			$("input[name=loginname]").val("Eric");
			$("input[name=regname]").val("Eric");
			$("textarea[name=msgcont]").val("hello world!");
			break;
		case param=="info":
			$("input[name=loginname]").val("Eric");
			$("input[name=regname]").val("Eric");
			$("input[name=phone]").val("15050052536");
			$("input[name=email]").val("10086@qq.com");
			$("input[name=addr]").val("china");
			break;
		default:;
	}
}

// ============================================================================================

$(document).ready(function(e) {
    form_init();
	form_check();
});

// ============================================================================================